Java8 和 Java 9中并发工具的改变

Java 8 和 Java 9中 concurrent包有了一些改变, 本文对这些改变做了汇总。

Java 8 中 Concurrent package的改变

java.util.concurrent中新的类和接口

增加了两个新接口和4个新类:

  1. 接口CompletableFuture.AsynchronousCompletionTask
  2. 接口CompletionStage

  3. CompletableFuture

  4. ConcurrentHashMap.KeySetView
  5. CountedCompleter
  6. CompletionException

java.util.concurrent.ConcurrentHashMap的新方法

集合框架在Java 8中做了修订,基于streamlambda表达式添加了很多聚合方法。因此 ConcurrentHashMap 也引入了30几个新方法,包括各种foreach方法(forEachforEachKeyforEachValue, 和 forEachEntry)、搜索方法(searchsearchKeyssearchValues, 和 searchEntries)和reduction方法(reducereduceToDoublereduceToLong等)。

也添加了一些其它方法,比如 mappingCountnewKeySet。并且当前版本的ConcurrentHashMap的更适合做cache,因为增加了当键值不存在的时候的检查方法。

java.util.concurrent.atomic中的新类

为了并发计算count、sum, 新引入了DoubleAccumulatorDoubleAdderLongAccumulatorLongAdder类,比Atomic提供更高的吞吐率。

java.util.concurrent.ForkJoinPool的新方法

静态的commonPool()新加入,可以为ForkJoinTask提供通用池。

两个方法 getCommonPoolParallelism() 和 commonPool()提供不同的配置。

新类 java.util.concurrent.locks.StampedLock

新类StampedLock提供三种模式(写,读,乐观读),用来提高性能。

Java 9 中 Concurrent package的改变

主要是 JEP 266: More Concurrency Updates, 包括publish-subscribe, CompletableFuture接口的加强等。

参考文档

  1. Concurrency Utilities Enhancements in Java SE 8
  2. Java 9's other new enhancements, Part 6: Concurrency
  3. The Essential Java 9 Feature You Probably Never Heard Of
  4. Java 9's other new enhancements
  5. JEP 266: More Concurrency Updates
  6. Java 9 series: Concurrency Updates

原文地址:https://colobu.com/2018/03/12/Concurrency-Utilities-Enhancements-in-Java-8-Java-9/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值